package com.ruoyi.teacher.service;

import java.util.List;

import com.ruoyi.teacher.domain.*;
import com.ruoyi.teacher.domain.vo.DataVO;
import com.ruoyi.teacher.domain.vo.QueryParamsVO;
import com.ruoyi.teacher.domain.vo.QueryVO;

/**
 * 教师基本信息Service接口
 *
 * @author Mie
 * @date 2022-04-12
 */
public interface ITeacherService
{
    /**
     * 自定义查询
     *
     * @param query 自定义查询条件
     * @return 自定义查询结果
     */
    public List<QueryVO> selectQueryResult(QueryParamsVO query);
    /**
     * 自定义查询结果列表
     *
     * @param query 自定义查询条件
     * @return 自定义查询结果列表
     */
    public List<QueryVO> selectQueryList(QueryVO query);

    /**
     * 通过A00s查询结果列表
     *
     * @param A00s 自定义查询条件
     * @return 自定义查询结果列表
     */
    public List<QueryVO> selectListByA00s(Long[] A00s);
    /**
     * 查询教师基本信息
     *
     * @param a00 教师基本信息ID
     * @return 教师基本信息
     */
    public Teacher selectTeacherById(Long a00);

    /**
     * 查询教师基本信息
     *
     * @param userId 用户ID
     * @return 教师基本信息
     */
    public Teacher selectTeacherByUserId(Long userId);

    /**
     * 查询教师基本信息
     *
     * @param A00 教师ID
     * @return 教师基本信息
     */
    public Teacher selectTeacherByA00(Long A00);

    /**
     * 查询教师基本信息列表
     *
     * @param teacher 教师基本信息
     * @return 教师基本信息集合
     */
    public List<Teacher> selectTeacherList(Teacher teacher);

    /**
     * 查询指定部门下的教师列表
     *
     * @param deptIds 指定部门id列表
     * @return 教师基本信息集合
     */
    public List<Teacher> listTeacherByDeptIds(Long[] deptIds);


    /**
     * 查询教师各年龄段的人数
     * @return 教师各年龄段的人数
     */
    public List<Teacher> selectListNoParamaters();

    /**
     * 查询教师职称级别的人数
     * @return 职称级别的人数
     */
    public List<Integer>  selectTitleCount();

    /**
     * 查询教师各年龄段的人数
     * @return 教师各年龄段的人数
     */
    public List<Integer>  selectCount();

    /**
     * 查询教师学历数据
     * @return 教师各学历的人数
     */
    public List<DataVO>  selectDegreeCount();

    /**
     * 通过A00查询教师的学历学位信息
     *
     * @param A00 指定教师ID
     * @return 教师的学历学位信息
     */
    public List<Degree> selectDegreeByA00(Long A00);

    /**
     * 通过A00查询教师的工作信息
     *
     * @param A00 指定教师ID
     * @return 教师的工作信息
     */
    public List<TWork> selectWorkInfoByA00(Long A00);

    /**
     * 通过A00查询教师的职称信息
     *
     * @param A00 指定教师ID
     * @return 教师的职称信息
     */
    public List<TTitle> selectTitleByA00(Long A00);

    /**
     * 通过A00查询教师的培训情况
     *
     * @param A00 指定教师ID
     * @return 教师的培训情况
     */
    public List<TTrain> selectTrainByA00(Long A00);

    /**
     * 通过A00查询教师的考核信息
     *
     * @param A00 指定教师ID
     * @return 教师的考核信息
     */
    public List<TAssessment> selectAssessmentByA00(Long A00);

    /**
     * 通过A00查询教师的档案信息
     *
     * @param A00 指定教师ID
     * @return 教师的档案信息
     */
    public List<TFile> selectFileByA00(Long A00);

    /**
     * 通过A00查询教师的附件材料
     *
     * @param A00 指定教师ID
     * @return 教师的附件材料
     */
    public List<TAppendix> selectAppendixByA00(Long A00);

    /**
     * 通过A00查询教师的个人基本信息
     *
     * @param A00 指定教师ID
     * @return 教师的个人基本信息
     */
    public List<Teacher> selectListByA00(Long A00);

    /**
     * 新增教师基本信息
     *
     * @param teacher 教师基本信息
     * @return 结果
     */
    public int insertTeacher(Teacher teacher);

    /**
     * 修改教师基本信息
     *
     * @param teacher 教师基本信息
     * @return 结果
     */
    public int updateTeacher(Teacher teacher);

    /**
     * 批量删除教师基本信息
     *
     * @param a00s 需要删除的教师基本信息ID
     * @return 结果
     */
    public int deleteTeacherByIds(Long[] a00s);

    /**
     * 删除教师基本信息信息
     *
     * @param a00 教师基本信息ID
     * @return 结果
     */
    public int deleteTeacherById(Long a00);
}
